﻿
<line x1="@X1" y1="@Y1" x2="@X2" y2="@Y2"
        r="@StrokeWidth"
        fill="rgba(@StrokeColor.R,@StrokeColor.G,@StrokeColor.B,@StrokeColor.A)"
        stroke="rgba(@StrokeColor.R,@StrokeColor.G,@StrokeColor.B,@StrokeColor.A)"
        stroke-dasharray="@StrokeDashArray" stroke-linejoin="@Join.ToString().ToLower()"
        stroke-linecap="@Cap.ToString().ToLower()"
        stroke-width="@StrokeWidth"
        @onclick="OnClick"
        @ondblclick="OnDoubleClick"
        @onmousemove="OnMouseMove"
        @onmousewheel="OnMouseWheel"
        @ondrag="OnDrag"
        @onmousedown="OnMousePressed"
        @onmouseup="OnMouseReleased"
        @onmouseout="OnMouseOut"
        @onmouseover="OnMouseOver"
        style="opacity:@Opacity">
</line>

@code
{
    [Parameter]
    public int X1 { get; set; }
    [Parameter]
    public int Y1 { get; set; }
    [Parameter]
    public int X2 { get; set; }
    [Parameter]
    public int Y2 { get; set; }
    [Parameter]
    public double Opacity { get; set; } = 1;
    [Parameter]
    public Color StrokeColor { get; set; } = Color.Black;
    [Parameter]
    public double StrokeWidth { get; set; } = 2;
    [Parameter]
    public StrokeLineCap Cap { get; set; }
    [Parameter]
    public StrokeLineJoin Join { get; set; }
    [Parameter]
    public int StrokeDashArray { get; set; }

    [Parameter]
    public EventCallback<MouseEventArgs> OnClick { get; set; }
    [Parameter]
    public EventCallback<MouseEventArgs> OnDoubleClick { get; set; }
    [Parameter]
    public EventCallback<MouseEventArgs> OnMouseMove { get; set; }
    [Parameter]
    public EventCallback<WheelEventArgs> OnMouseWheel { get; set; }
    [Parameter]
    public EventCallback<DragEventArgs> OnDrag { get; set; }
    [Parameter]
    public EventCallback<MouseEventArgs> OnMousePressed { get; set; }
    [Parameter]
    public EventCallback<MouseEventArgs> OnMouseReleased { get; set; }
    public EventCallback<MouseEventArgs> OnMouseOut { get; set; }
    [Parameter]
    public EventCallback<MouseEventArgs> OnMouseOver { get; set; }

}
